﻿/*************************************
 * Creator:peiyang
 * DateTime:2021/3/18 8:32:16
 * Description:<Description>
 * CopyRight:臭皮匠工作室
 * ***********************************/

using Cpjit.SunnyPaine.Toolkit.ActiveMQ.Enums;
using Cpjit.SunnyPaine.Toolkit.ActiveMQ.Model;

namespace Cpjit.SunnyPaine.Toolkit.ActiveMQ.Impl
{
    /// <summary>
    /// 提供一个消费者公共信息抽象类。
    /// </summary>
    public abstract class AbstractConsumer : IConsumer
    {
        /// <summary>
        /// 是否运行。
        /// </summary>
        protected bool IsRunning { get; set; }

        /// <summary>
        /// 消息目标类型。
        /// </summary>
        public DestType DestinationType { get; set; }

        /// <summary>
        /// 消息目标名称。
        /// </summary>
        public string DestinationName { get; set; }

        /// <summary>
        /// 是否订阅。true：订阅，false：不订阅。默认为true。
        /// </summary>
        public bool IsSubscribed { get; set; } = true;

        /// <summary>
        /// ActiveMQ客户端对象。
        /// </summary>
        public IActivemqClient ActivemqClient { get; set; }


        /// <summary>
        /// 接收消息。
        /// </summary>
        /// <param name="client"></param>
        /// <param name="args"></param>
        public abstract void Receive(IActivemqClient client, DataEventArgs args);

        /// <summary>
        /// 释放。IDisposable成员。
        /// </summary>
        public virtual void Dispose()
        {
            this.IsRunning = false;
        }
    }
}
